home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 8
/
FM Towns Free Software Collection 8.iso
/
t_os
/
namegen
/
src
/
main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-06-01
|
4KB
|
101 lines
/***** 名前ジェネレータ namegen *****/
/***** main.c *****/
#include <stdio.h>
#include <stdlib.h>
#include "namegen.h"
#include "put.h"
void main(int argc, char *argv[]){
/* ・各ワードは読込順にwordbufに入れられ、 */
/* 一杯になると次のwordbufが確保される。 */
/* ・このときそのワードを定義するフィールドfieldでは、 */
/* ptrbuf[field].ptr[]にそのワードへのポインタが格納される */
/* ・ptrbufは一杯になると新たに確保される */
/* ・フィールドfieldのワードword (1<word<wordix_max[field]) は、 */
/* ptrbuf_base[field]が指すptrbufから */
/* ptrbufのリストを(word / PTRBUF_MAX)回辿ったあと、 */
/* ptrbuf->ptr[word % PTRBUF_MAX] にある */
Ptrbuf *ptrbuf_base[FIELD_MAX]; /* 各フィールドの */
/* ptrbufベース */
int wordix_max[FIELD_MAX]; /* 各ワードのワードix最大 */
int gen_prob[FIELD_MAX]; /* 各フィールドの出現確率 */
int gen_num; /* 名前生成数 */
int verbose_level; /* 冗長モードレベル */
int i;
int field_max; /* フィールド数 */
gen_num = 1; /* デフォルト生成数 */
verbose_level = 0; /* デフォルト冗長モード */
for (i = 1 ; i < argc && (char)*argv[i] == '-' ; i ++){
switch ( (char)*(argv[i]+1)){
case 'n' :
if (i < argc-1){
gen_num = atoi(argv[i+1]);
if (gen_num < 0){
error(ERR_HELP,NULL);
}
i ++;
}
break;
case 'v' :
if (i < argc-1){
verbose_level = atoi(argv[i+1]);
if (verbose_level < 0 || 2 < verbose_level){
error(ERR_HELP, NULL);
}
i ++;
}
break;
default :
error(ERR_HELP, NULL);
break;
}
}
if (i == argc){
error(ERR_HELP, NULL);
}
if (verbose_level > 0){
putstr("***** Start Reading Namefile *****\n", stderr);
}
for ( ; i < argc ; i ++){ /* ファイル読込 */
read_namefile(argv[i],
ptrbuf_base,
wordix_max,
gen_prob,
&field_max,
verbose_level);
}
/* 生成確率>0でワード未定義のフィールドをチェック */
for (i = 1 ; i <= field_max ; i ++){
if (gen_prob[i] > 0 && wordix_max[i] == 0){
putstr("Field:", stderr);
putint(i, stderr);
putstr("\n", stderr);
error(ERR_UNDEF_WORD, NULL);
}
}
if (verbose_level > 0){
putstr("***** Finished Reading Namefile *****\n\n", stderr);
}
generate_name(ptrbuf_base, /* 名前生成 */
wordix_max,
gen_prob,
field_max,
gen_num);
}